day 23:
希望瀏覽數可以多點啦,更多人看我的教學後有所增長
範例:
from tkinter import *
from tkinter import messagebox
entry_username = None
entry_password = None
frame = None
label_success = None
button_logout = None
def new_frame():
global label_success, button_logout
label_success = Label(window, text="Hello, admin!", font=("Arial", 14))
label_success.pack(pady=20)
button_logout = Button(window, text="Logout", command=logout)
button_logout.pack()
def login():
global entry_username, entry_password, frame
username = entry_username.get()
password = entry_password.get()
if username == "admin" and password == "123456":
messagebox.showinfo("Login", "Login successful!")
#刪除登入表單
frame.destroy()
#新增的小工具
new_frame()
else:
messagebox.showerror("Login", "Invalid username or password.")
def logout():
global frame, label_success, button_logout
label_success.pack_forget()
button_logout.pack_forget()
create_login_form()
def create_login_form():
global entry_username, entry_password, frame
frame = Frame(window, padx=20, pady=20, bg="#f2f2f2")
frame.pack()
label_username = Label(frame, text="Username:", font=("Arial", 12), bg="#f2f2f2", fg="#333333")
label_username.grid(row=0, column=0, sticky=W)
entry_username = Entry(frame, font=("Arial", 12))
entry_username.grid(row=0, column=1, padx=10, pady=10)
label_password = Label(frame, text="Password:", font=("Arial", 12), bg="#f2f2f2", fg="#333333")
label_password.grid(row=1, column=0, sticky=W)
entry_password = Entry(frame, show="*", font=("Arial", 12))
entry_password.grid(row=1, column=1, padx=10, pady=10)
button_login = Button(frame, text="Login", font=("Arial", 12, "bold"), bg="#333333", fg="#ffffff", command=login)
button_login.grid(row=2, column=0, columnspan=1, pady=20)
button_quit = Button(frame,text="Quit",font=("Arial", 12, "bold"), bg="#333333", fg="#ffffff",command=window.destroy)
button_quit.grid(row=2,column=1, columnspan=3, pady=20)
#建立主視窗
window = Tk()
window.title("Login test")
window.configure(bg="#f2f2f2")
# 建立初始登入表單
create_login_form()
#運行主視窗的事件循環
window.mainloop()
global
global
是用作執行函數是只能用函數來的變數運行,但加入後可以使用全域變數及更改它的值。
login()
這個就是登入的檢查,昨天已介紹了。
new_frame()
這個是在登入成功的時候會改變整個視窗的內容。
frame
是一個大的內容,放着label_username
(登入名稱標籤)、entry_username
(登入名稱輸入)、 label_password
(登入密碼標籤)、entry_password
(登入密碼輸入)、button_login
(登入按鈕) 、button_quit
(離開按鈕),可以想像類似是一個大箱子放着六個小箱子,在到入成功的時候便會剷除以作放置其他內容。
font
設定字體,有興趣的話可以改成其他字體
logout()
在登入後可以選擇登出,並用pack_forget()
剷除目前的物件
執行結果:
各位可以自行嘗試更改登入後出現的內容,並根據昨天的教學轉換成exe
檔案分享給朋友
今天的有趣內容到這裏,如果覺得我的文章對你有幫助或有更好的建議,可以追蹤我和不妨在留言區提出,我們明天再見。
reference
https://poe.com